package io;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.charset.StandardCharsets;

/**
 * 向文件中寫入文本數據
 */
public class WriteStringDemo {
    public static void main(String[] args) throws IOException {
        //向文件fos.txt中寫入文本數據
        FileOutputStream fos = new FileOutputStream("fos.txt", true);
//        String line = "還記得你說家是唯一的城堡，隨著稻香河流繼續奔跑。";
//        /*
//            UTF-8 萬國碼
//            英文，數字，符號每個字符佔一個字節
//            中文每個字符佔三個字節
//            String自身提供了字符串轉換為一組字節的方法：getBytes()
//         */
//        byte[] data = line.getBytes(StandardCharsets.UTF_8);
//        fos.write(data);
//
//        line = "微微笑，小時候的夢我知道。";
//        fos.write(line.getBytes(StandardCharsets.UTF_8));
        /*
            文件流的構造器
            FileOutputStream(String )

            以上兩個構造器創建文件流時，為覆蓋模式
            特點：
            如果指定的文件不存在會自動創建，但是如果文件存在，會將該文件數據全部清除
            然後將通過這個流寫出的數據全部保留在文件中

            追加模式:
            FileOutputStream(String filename,boolean append)
            FileOutputStream(File file,boolean append)
            上述构造器如果第二个参数传入的值为true,则文件流采取追加模式,特点:
            当文件存在,那么文件数据全部保留,新写入的数据会被追加到文件中.
         */

        fos.write("愛你孤身走暗巷，".getBytes(StandardCharsets.UTF_8));
        fos.write("愛你不跪的模樣。".getBytes(StandardCharsets.UTF_8));
        fos.write("愛你對峙過絕望，".getBytes(StandardCharsets.UTF_8));
        fos.write("不肯哭一場，".getBytes(StandardCharsets.UTF_8));

        System.out.println("寫出完畢");
        fos.close();
    }
}
